/*
Copyright (C) 1997-2008 ZSNES Team ( zsKnight, _Demo_, pagefault, Nach )

http://www.zsnes.com
http://sourceforge.net/projects/zsnes
https://zsnes.bountysource.com

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 2 as published by the Free Software Foundation.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/

#include "zthread.h"
#include "load.h"

extern "C" { void zstart(); }

ZSNESThread::ZSNESThread() : running(false)
{
}

void ZSNESThread::run()
{
  if (!running)
  {
    if (!setjmp(jump))
    {
      running = true;
      zstart();
    }
  }
}

void ZSNESThread::done()
{
  if (running)
  {
    running = false;
    longjmp(jump, 1);
  }
}

void ZSNESThread::prepare_close()
{
  if (running)
  {
    debugger_quit = true;
  }
}
